﻿#region NamesSpace
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MS.InformationManagement.Presenter.Support;
using MS.InformationManagement.Support;
using MS.InformationManagement.BLL.SearchSender;
using MS.InformationManagement.DAL.DocumentCenter;
using System.Web.UI;
using MS.InformationManagement.BLL.RecordCenter;
using MS.InformationManagement.BLL.TaxonomyTerms;
using MS.InformationManagement.BLL.InsertarRadicado;
using Microsoft.SharePoint;
using MS.InformationManagement.Support.Constants;
using MS.InformationManagement.Core.Documentset;
using MS.InformationManagement.Core.Support;
using Microsoft.SharePoint.Taxonomy;
#endregion

namespace MS.InformationManagement.Presenter.InsertarRadicado
{
    public class InsertarRadicadoPresenter : BasePresenter<IInsertarRadicadoView>
    {
        #region Constructors

        public InsertarRadicadoPresenter(IInsertarRadicadoView view) : base(view) { }

        #endregion

        #region Methods

        public void HandleAssociatedRadicado()
        {
            View.AssociatedRadicadosData = new List<Radicado>();
            View.AssociatedRadicadosData.Add(RadicadosHelper.GetRadicadoById(View.AssociatedRadicados[0]));
            if (!string.IsNullOrEmpty(View.AssociatedRadicadosData[0].NúmeroExpediente))
                View.SubjectExpediente = View.AssociatedRadicadosData[0].NúmeroExpediente;
            View.LoadForAnexo();
        }

        public void HandleLoad()
        {
            
            MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado bllObject = new BLL.InsertarRadicado.InsertarRadicado();
            View.Tipos = bllObject.GetTipoRadicado();
            View.Modos = bllObject.GetModoRecepcionEntrada();

            if (View.CurrentId.HasValue)
            {
                View.Radicado_Empresa = bllObject.GetRadicadoEmpresa(View.CurrentId.Value, View.CurrentList);
                if (View.Radicado_Empresa != null)
                    View.RemitenteID = View.Radicado_Empresa.Nit;

                View.Radicado_Persona = bllObject.GetRadicadoPersona(View.CurrentId.Value, View.CurrentList);
                if (View.Radicado_Persona != null)
                    View.RemitenteID = View.Radicado_Persona.Cédula;

            }
            else {
                bool autoSelectLocation = Convert.ToBoolean(ConfigurationHelper.GetInstance().ConfigItems[GlobalConstants.AUTOSELECCIONAR_UBICACION]);
                if (autoSelectLocation)
                {
                    string cityName = ConfigurationHelper.GetInstance().ConfigItems[GlobalConstants.AUTOSELECCIONAR_UBICACION_VALOR];
                    TaxonomyFieldValue autoSelectCity = TermStoreHelper.GetTaxonomyFieldByTerm(GlobalConstants.METADATA_GROUP_NAME, GlobalConstants.METADATA_TERM_COUNTRY, cityName, true);
                    View.Country = autoSelectCity;
                }
            }

            View.Show();
      
           
           
        }

        public void LoadRemitente()
        {
            MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado bllObject = new BLL.InsertarRadicado.InsertarRadicado();
            View.remitente = bllObject.GetSender(View.RemitenteID);
            View.LoadRemitente();
        }

        public void HandleSave()
        {
            if (View.Radicado_Empresa != null)
            {
                if (View.AssociatedRadicados == null && string.IsNullOrEmpty(View.AssociatedAction))
                    View.OperationResponse = new MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado().SaveRadicadoEmpresa(View.Radicado_Empresa);
                else
                    View.OperationResponse = MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado.CreateRadicadoWithAssocitedAction(View.AssociatedAction, View.Radicado_Empresa, View.AssociatedRadicados, View.SubjectExpediente);
            }
            else
            {
                if (View.AssociatedRadicados == null && string.IsNullOrEmpty(View.AssociatedAction))
                    View.OperationResponse = new MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado().SaveRadicadoPersona(View.Radicado_Persona);
                else
                    View.OperationResponse = MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado.CreateRadicadoWithAssocitedAction(View.AssociatedAction, View.Radicado_Persona, View.AssociatedRadicados, View.SubjectExpediente);
            }
            View.RadicadoGenerated();
        }

        public void HandleUpdate()
        {
            if (View.Radicado_Empresa != null)
            {
                new MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado().UpdateRadicadoEmpresa(View.Radicado_Empresa);
            }
            else
            {
                new MS.InformationManagement.BLL.InsertarRadicado.InsertarRadicado().UpdateRadicadoPersona(View.Radicado_Persona);
            }
            View.RadicadoUpdated();
        }

        #endregion
    }
}
